package com.fractalist.base.core.utils;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

public class PageInfo {
	//一页显示多少行
	public int onePageRowNum=10;
	
	//操作标识
	public String optTag="1";
	
	//当前页码数
	public int currentPageNum=1;
	
	//总记录数
	public int count=0;
	
	//一页开始行数
	public int startRow=0;
	
	//一页结束行数
	public int endRow;
	
	//总页数
	public int sumPage;
	
	//分页数据集合
	public List<HashMap<String,String>> pageData;
	
	//分页连接结合
	public List<Object> pageLinkList=new ArrayList<Object>();
	
	//分页链接中，显示几个数字
	public int linkNum=5;

	public String wapId;
	
	public PageInfo(int onePageRowNum,int count){
		this.onePageRowNum=onePageRowNum;
		this.count=count;
		
		//计算总页数
		int tempi=count%onePageRowNum;
		if(tempi==0){
			sumPage=count/onePageRowNum;
		}else{
			sumPage=count/onePageRowNum;
			sumPage=sumPage+1;
		}
		
		//初始化链接数组
		HashMap<String,String> map1=new HashMap<String,String>();
		map1.put("optTag", "fr");
		map1.put("disabled", "false");
		
		HashMap<String,String> map2=new HashMap<String,String>();
		map2.put("optTag", "p");
		map2.put("disabled", "false");
		
		//添加分页数字
		List<String> numPageList=new ArrayList<String>();
		
		for(int i=1;i<=sumPage;i++){
			numPageList.add(i+"");
		}

		HashMap<String,String> map6=new HashMap<String,String>();
		map6.put("optTag", "n");
		map6.put("disabled", "true");
		HashMap<String,String> map7=new HashMap<String,String>();
		map7.put("optTag", "la");
		map7.put("disabled", "true");
		
		pageLinkList.add(map1);
		pageLinkList.add(map2);
//		pageLinkList.add(map3);
		pageLinkList.add(numPageList);
//		pageLinkList.add(map5);
		pageLinkList.add(map6);
		pageLinkList.add(map7);
		
		computeStartEndNum();
	}
	
	/**
	 * 当用户操作来了之后，根据参数 optTag 不同，来进行分页处理
	 * n:下一页
	 * p:上一页
	 * la:最后一页
	 * fr:第一页
	 * @param optTag
	 */
	public void operation(String optTag){
		if(optTag.equals("n")){
			if(currentPageNum<sumPage){
				currentPageNum++;
			}
		}else if(optTag.equals("p")){
			if(currentPageNum>1){
				currentPageNum--;
			}
		}else if(optTag.equals("la")){
			currentPageNum=sumPage;
		}else if(optTag.equals("fr")){
			currentPageNum=1;
		}else{
			try{
				currentPageNum=Integer.parseInt(optTag);
			}catch(Exception ex){
				currentPageNum=1;
			}
		}
		//计算开始结束行号
		computeStartEndNum();
	}
	
	/**
	 * 计算链接集合
	 */
	public void computeLinkSet(){
		
//		if(currentPageNum>=sumPage){
//			HashMap<String,String> map4=(HashMap<String,String>)pageLinkList.get(4);
//			map4.put("disabled", "false");
//			
//			HashMap<String,String> map4=(HashMap<String,String>)pageLinkList.get(4);
//		}
		
//		if(linkNum>sumPage){
//			int mPagei=0;
//			int tempi=linkNum%2;
//			if(tempi==0){
//				mPagei=linkNum/2;
//			}else{
//				mPagei=linkNum/2;
//				mPagei++;
//			}
//		}
	}
	
	public void computeStartEndNum(){
		//计算当前页的 开始行，结束行
		if(currentPageNum==1){
			startRow=0;
			endRow=onePageRowNum;
		}else{
			int tempi=currentPageNum*onePageRowNum;
			if(tempi>=count){
				//得到（当前页*每页行数）-总行数
				int cha1=tempi-count;
				//当前页结束行号
				//endRow=tempi-cha1;
				endRow=onePageRowNum-cha1;
				//当前页开始行号
				startRow=tempi-onePageRowNum;
			}else{
				//当前页结束行号
				//endRow=tempi-1;
				endRow=onePageRowNum;
				//当前页开始行号
				startRow=tempi-onePageRowNum;
			}
		}
	}

	public int getOnePageRowNum() {
		return onePageRowNum;
	}

	public void setOnePageRowNum(int onePageRowNum) {
		this.onePageRowNum = onePageRowNum;
	}

	public String getOptTag() {
		return optTag;
	}

	public void setOptTag(String optTag) {
		this.optTag = optTag;
	}

	public int getCurrentPageNum() {
		return currentPageNum;
	}

	public void setCurrentPageNum(int currentPageNum) {
		this.currentPageNum = currentPageNum;
	}

	public int getCount() {
		return count;
	}

	public void setCount(int count) {
		this.count = count;
	}

	public int getStartRow() {
		return startRow;
	}

	public void setStartRow(int startRow) {
		this.startRow = startRow;
	}

	public int getEndRow() {
		return endRow;
	}

	public void setEndRow(int endRow) {
		this.endRow = endRow;
	}

	public int getSumPage() {
		return sumPage;
	}

	public void setSumPage(int sumPage) {
		this.sumPage = sumPage;
	}

	public List<HashMap<String, String>> getPageData() {
		return pageData;
	}

	public void setPageData(List<HashMap<String, String>> pageData) {
		this.pageData = pageData;
	}

	public List<Object> getPageLinkList() {
		return pageLinkList;
	}

	public void setPageLinkList(List<Object> pageLinkList) {
		this.pageLinkList = pageLinkList;
	}

	public int getLinkNum() {
		return linkNum;
	}

	public void setLinkNum(int linkNum) {
		this.linkNum = linkNum;
	}

	public String getWapId() {
		return wapId;
	}

	public void setWapId(String wapId) {
		this.wapId = wapId;
	}
	
	
	
	
}
